#ifndef BCP_H_
#define BCP_H_

#include <queue>
#include <iostream>

typedef struct tarefa
{
        char 
        tipo; /* 0 - CPU
              A/Z - I/O */
        int 
        tempoQFalta;
        
        int 
        clockQueSai;
};

class BCP
{
        private:

                int
                mCodigo;

                char
                mUsandoDispositivo; /* identifica qual dispositivo esta sendo usado -
0 p/ CPU */

                std::queue<tarefa>
                mTarefas;
                
                int
                mPrioridade;

        public:

                BCP( );

                virtual
                ~BCP( );

                void
                setCodigo( int );

                int
                getCodigo( );

                void
                inserirTarefas( char, int );

                void
                getTarefaAtual( char*, int* ); /* argumentos sao o retorno dos
elementos da tarefa */

                void
                setTarefaAtual( int ); /* so altera o tempo que falta */

                void
                proximaTarefa( ); /* nao esquecer de excluir a tarefa atual antes de
achar a proxima */

                bool
                fimDoProcesso( );

                void
                setUsandoDispositivo( char );

                char
                getUsandoDispositivo( );
                
                void
                setClockQueSai( int );
                
                int
                getClockQueSai( );
                
                void
                imprimeTarefa( );
                
                void
                setPrioridade( int );
                
                int
                getPrioridade( );
};

#endif /*BCP_H_*/
